package Test.trycatch;


/**
 * @Author: guozhenran
 * @Date: 2023/4/25 10:46
 * @Description: try中发生异常时，return语句写在catch块中
 *      try中发生异常之后，进入catch块，return语句执行完之后进入finally块，
 *      finally块执行完之后，执行return返回语句
 *      对于基本数据类型来说，finally中对返回值的修改不会影响try中return返回变量的值
 *      （解释：try或catch中的return要返回的值在finally执行之前会拷贝一份）
 */
public class Demo06_1 {
    public static void main(String[] args) {
        System.out.println(func());
    }

    public static int func(){
        int a = 10;
        try{
            System.out.println("try中的代码块");
            a = a /0;
            a += 10;
            return a ;
        }catch (Exception e){
            System.out.println("catch中的代码块");
            a += 10;
            return a;
        }finally {
            System.out.println("finally中的代码块");
            a += 10;
            if (a > 10){
                System.out.println("a > 10, a = "+a);
            }
            a += 10;
        }
//        System.out.println("hahaha");//报错，Unreachable statement
//        return a += 10000;报错，Unreachable statement
    }
}